package com.crt.openapi.modules.apiinterface.dao;

import java.util.List;
import java.util.Map;

import com.crt.openapi.common.BaseDao;
import com.crt.openapi.modules.apiinterface.dao.vo.ApiAppVO;
import com.crt.openapi.modules.common.domain.entity.ApiApp;

/**
 * ApiApp 基础Dao层接口
 * 
 * @Author  LiuBao
 * @Version 2.0
 * @Date 2016年9月27日
 *
 */
public interface ApiAppInfDao extends BaseDao<ApiApp> {
	
	/**
	 * 分页条件查询
	 * @param pageIndex 起始角标
	 * @param pageSize  分页条数
	 * @param apiApp  查询条件
	 * @return  List<ApiApp>
	 */
	public List<ApiAppVO> selectListByPage(int pageIndex, int pageSize, ApiApp apiApp);
	
	/**
	 * 获取数据总条数
	 * @param apiUser 查询条件
	 * @return int 
	 */
	int selectCountByPage(ApiApp apiApp);
	
	/**
	 * 管理员分页查询所有
	 * @param pageIndex 起始角标
	 * @param pageSize  分页条数
	 * @param apiApp  查询条件
	 * @return  List<ApiApp>
	 */	
	public List<ApiAppVO> selectAllListByPage(int pageIndex, int pageSize, ApiApp apiApp);
	
	/**
	 * 管理员获取数据总条数
	 * @param apiUser 查询条件
	 * @return int 
	 */
	int selectAllCountByPage(ApiApp apiApp);
	
	/**
	 * 分页条件查询
	 * @param pageIndex 起始角标
	 * @param pageSize  分页条数
	 * @param apiUser  查询条件
	 * @param userId  查询条件
	 * @return  List<ApiApp>
	 */
	List<ApiAppVO> selectListByPage(int pageIndex, int pageSize, ApiApp apiApp, String userId);

	/**
	 * 分页条件查询总数
	 * @param apiUser
	 * @param userId  查询条件
	 * @return
	 */
	int selectCountByPage(ApiApp apiApp, String userId);
	
	
	/**
	 * 查询授权管理集合
	 * @param apiApp  查询条件
	 * @param userId  查询条件
	 * @return  List<ApiApp>
	 */
	List<ApiAppVO> selectAuthList(ApiApp apiApp,String userId);
	
	/**
	 * 管理查询详情的应用列表
	 * @param apiId
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	Map apiAppDetail(int apiId);

	/**
	 * 条件查找最新的app信息
	 * @param apiApp
	 * @return
	 */
	public ApiApp selectLatestedOne(ApiApp apiApp);

	/**
	 * 模糊条件查询接口
	 * 
	 * @param apiApp
	 * @param userId
	 * @return
	 */
	public List<ApiAppVO> selectListByFuzzy(ApiApp apiApp, String userId);	
	
}
